<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>插件接口的设计</title>
</head>
<body>
    <script>

        /**
         * 1.传递一个参数，将合并到 jQuery 对象上
         * 2.传递多个参数时，将合并到第一个对象上
         *   2.1判断每个参数是否为null
         *   2.2for in循环对象
         *   2.3复制对象的属性和值，挂载到target对象上，覆盖原有同名属性
        */
        aJquery.extend = aJquery.fn.extend = function() {
            var options,
                copy,
                target = arguments[0],
                i = 1,
                length = arguments.length;
            
            if(i === length) {
                // 只有一个参数，传递了一个参数
                target = this; // 执行上下文的 jQuery 对象，或者实例
                i--;
            }

            for(; i < length; i++) {
                if((options = arguments[i]) != null) {
                    for (var key in options) {
                        if (Object.hasOwnProperty.call(options, key)) {
                            copy = options[key];
                            target[key] = copy  // 复制，覆盖原有同名属性
                        }
                    }
                }
            }

            return target
        }

        var obj = {
            a: '123',
            b: '456',
            c: '789'
        }

        var result = extend(obj, {a: 'kkk'})
        console.log('result: ~~~',result)  // {a: 'kkk', b: '456', c: '789'}

        // for(name in obj) {
        //     console.log(name) // a , b , c
        // }
    </script>
</body>
</html>